package com.lanyou.cook.camel.service;

import java.util.List;
import java.util.Map;

import org.apache.camel.CamelContext;


/**
 * 对外提供服务的接口，可根据接口编号创建、启动、停止、删除camelContext
 * @author ly-lihailang
 *
 */
public interface CamelService {
	/**
	 * 根据服务接口编号新建并启动创建的camelContext
	 * @param camelId 服务接口编号
	 * 
	 */
	public void createAndStartCamel(String camelId);
	/**
	 * 根据服务接口编号启动已有camelContext，如果camelContext不存在自动创建新camelContext并启动
	 * @param camelId 服务接口编号
	 * 
	 */
	public void startCamel(String camelId);
	/**
	 * 根据服务接口编号停止camelContext
	 * @param camelId 服务接口编号
	 * 
	 */
	public void stopCamel(String camelId);
	/**
	 * 根据服务接口编号 删除camelContext，删除之前应先停止
	 * @param camelId 服务接口编号
	 * 
	 */
	public void delCamel(String camelId);
	/**
	 * 初始化服务接口，将已审核的接口加载
	 */
	public void init();
	
	/**
	 * @return 当前容器中所有的CamelContext
	 */
	public Map<String, CamelContext> getAllCamelContext();
	/**
	 * @return 所有审核通过的ftp接口
	 */
	public List<String> getAllFtpCode();
	/**
	 * 重启CamelContext
	 */
	public void restartCamel(String camelId);
	
	public void close();
}
